Ext.onReady(function() {
	if (username == null)
		return;
	Ext.QuickTips.init();
	function pageLoad() {
		Ext.define('ReportModel', {
					extend : 'Ext.data.Model',
					fields : [{
								name : 'repId'
							}, {
								name : 'rusId'
							}, {
								name : 'repName'
							}, {
								name : 'repType'
							}, {
								name : 'appId'
							}, {
								name : 'repLines'
							}, {
								name : 'repAlerts'
							}, {
								name : 'repEffort'
							}, {
								name : 'repTeamAdjustment'
							}, {
								name : 'repTestFactor'
							}, {
								name : 'repAdjustedEffort'
							}, {
								name : 'teamId'
							}, {
								name : 'testId'
							}, {
								name : 'repCreateTime'
							}, {
								name : 'repFileUrl'
							}, {
								name : 'appName'
							}]
				});

		var ReportStore = Ext.create('Ext.data.Store', {
					autoload : true,
					pageSize : pSize,
					model : 'ReportModel',
					remoteSort : true,
					remoteFilter : true,
					proxy : {
						type : 'ajax',
						url : 'report_reportList.action',
						method : 'POST',
						reader : {
							idProperty : 'repId',
							root : 'result.list',
							totalProperty : 'total'
						},
						simpleSortMode : true
					}
				});

		Ext.define('ApplicationModel', {
					extend : 'Ext.data.Model',
					fields : [{
								name : 'appId'
							}, {
								name : 'appName'
							}, {
								name : 'appHasReport'
							}, {
								name : 'appCreateTime'
							}, {
								name : 'userId'
							}]
				});

		var ApplicationStore = Ext.create('Ext.data.Store', {
					autoload : true,
					pageSize : pSize,
					model : 'ApplicationModel',
					remoteSort : true,
					proxy : {
						type : 'ajax',
						url : 'application_applicationList.action',
						method : 'POST',
						reader : {
							idProperty : 'appId',
							root : 'result.list',
							totalProperty : 'total'
						},
						simpleSortMode : true
					}
				});

		var ReportDetailGrid = Ext.create('Ext.grid.Panel', {
					itemId : 'ReportDetailGrid',
					store : ReportStore,

					columnLines : true,
					autoHeight : true,
					autoWidth : true,
					title : '报告详情',
					frame : true,
					loadMask : true,
					viewConfig : {
						stripeRows : true
					},
					columns : [{
								text : 'aaaaa'
							}]
				});
		var ReportGrid = Ext.create('Ext.grid.Panel', {
			itemId : 'ReportGrid',
			store : ReportStore,

			columnLines : true,
			autoHeight : true,
			autoWidth : true,
			title : '报告列表',
			frame : true,
			loadMask : true,

			viewConfig : {
				stripeRows : true
			},
			columns : [{
				text : "报告名称",
				flex:2,
				dataIndex : 'repName',
				sortable : true,
				renderer : function(value) {
					return '<a href="javascript:void(0);">' + value + '</a>';
				},
				// TODO :report detail tab
				listeners : {
					click : function(view, cell, row, col, e) {
						var rec = view.getStore().getAt(row);
						console.log(rec.get('repId'));
						// var tab =
						// Ext.getCmp('mainContent').getActiveTab();
						// tab.items.add(ReportDetailGrid);
						// tab.doLayout();
						var center = Ext.getCmp('mainContent');
						var ntb = Ext.getCmp('reportDetailTab'
								+ rec.get('repId'));
						if (ntb == undefined) {
							var tb = new Ext.Panel({
									id : 'reportDetailTab'
											+ rec.get('repId'),
									title : '报告详情: ' + rec.get('repName'),
									tabTip : '报告详情: ' + rec.get('repName'),
									closable : true,
									closeAction : 'destroy',
									iconCls : 'icon-reportdetail',
									cardSwitchAnimation : 'slide',
									reportId : rec.get('repId'),
									layout : 'anchor',
									autoScroll : true,
									autoLoad : {
										url : 'report_detailPage.action',
										scripts : true
									},
									waitMsgTarget : true
								});
							center.add(tb);
							center.setActiveTab(tb);
						} else {
							center.setActiveTab(ntb);
						}
					}
				}
			}, {
				text : "报告Id",
				width : 100,
				dataIndex : 'repId',
				sortable : true,
				hidden : true
			}, {
				text : "应用名称",
				flex:4,
				dataIndex : 'appName',
				sortable : true,
//				renderer : function(value, meta, record) {
//					return record.raw.application.appName;
//				}
			}, {
				text : "警告",
				flex:1,
				dataIndex : 'repAlerts',
				sortable : true
			}, {
				text : "创建时间",
				flex : 2,
				dataIndex : 'repCreateTime',
				sortable : true
			}, {
				text :"操作",
				menuDisabled : true,
				sortable : false,
				xtype : 'actioncolumn',
				items : [{
					iconCls : 'icon-delete',
					tooltip : '删除报告',
					text : '删除',
					handler : function(grid, rowIndex, colIndex) {

						Ext.MessageBox.confirm('提示', '您确定要删除所选吗?', function(
								btnId) {
							if (btnId == 'yes') {

								var rec = grid.store.getAt(rowIndex);
								var msgTip = Ext.MessageBox.show({
											title : '提示',
											width : 250,
											msg : '正在删除请稍候...'
										});
								Ext.Ajax.request({
											url : 'report_deleteReport.action',
											params : {
												repName : rec.get('repName'),
												repId : rec.get('repId')
											},
											method : 'POST',
											success : function(response) {
												msgTip.hide();
												var result = Ext.JSON
														.decode(response.responseText);
												if (result.success) {
													grid.store.remove(rec);
													Ext.Msg.alert('提示',
															'报告删除成功!');
												} else {
													Ext.Msg.alert('提示',
															'报告删除失败!');
												}
											},
											failure : function(response) {

												Ext.Msg.alert('提示', '报告删除失败!');

											}
										});
							}
						});
					}
				}, {
					iconCls : 'icon-editfind',
					tooltip : '查看报告',
					attr : 'style="margin-left:100"',
					handler : function(grid, rowIndex, colIndex) {
						var rec = grid.store.getAt(rowIndex);
						showWindow(rec);
					}
				}, {
					iconCls : 'icon-downArrow',
					tooltip : '下载报告',
					attr : 'style="margin-left:100"',
					handler : function(grid, rowIndex, colIndex) {
						var rec = grid.store.getAt(rowIndex);
						showWindow(rec);
					}
				}]
			}],// end columns
			features : [{
						ftype : 'filters',
						encode : true,
						local : false,
						filters : [{
									type : 'string',
									dataIndex : 'repName',
									disabled : false
								}, {
									type : 'string',
									dataIndex : 'application',
									disabled : false
								}

						]
					}],
			dockedItems : [{
				dock : 'top',
				xtype : 'toolbar',
				items : [

				{
							itemId : 'addButton',
							text : '生成报告',
							tooltip : '生成报告',
							iconCls : 'icon-add',
							scope : this,
							handler : function() {
								// var rec = null;
								// showWindow(rec);
							}
						}, '-', {
							xtype : 'FileDownloader',
							itemId : 'ReportDownloader',
							width : 0,
							height : 0,
							hidden : true
						}, {
							text : 'Excel',
							tooltip : '导出Excel列表',
							scope : this,
							iconCls : 'icon-excel',
							handler : function() {
								var list = getExcelParams(Ext
										.getCmp('ReportGrid'));
								var list = getExcelParams(Ext
										.getCmp('ReportGrid'));
								var downloader = Ext.getCmp('ReportDownloader');
								downloader.load({
											params : {
												preFilter : list[0],
												filter : list[1],
												sort : list[2],
												dir : list[3],
												headers : list[4],
												cheaders : list[5],
												title : list[6]
											},
											url : 'userstoExcel.action'
										});
							}
						}, '-', '显示记录数', {
							itemId : 'ReportCmbNum',
							name : 'ReportCmbNum',
							xtype : 'combo',
							width : 50,
							allowBlank : false,
							blankText : '必须选择页面大小!',
							store : pageStore,
							value : pSize,
							editable : false,
							loadingText : '正在加载...',
							displayField : 'name',
							valueField : 'abbr',
							emptyText : '请选择页面大小',
							queryMode : 'local',
							listeners : {
								select : function(combo, record, index) {
									pSize = this.getValue();
									ReportStore.pageSize = pSize;
									ReportStore.load();
								}
							}
						}, '-', '应用', {
							itemId : 'ReportByApplication',
							name : 'ReportByApplicatoin',
							xtype : 'combo',
							width : 120,
							allowBlank : true,
							store : ApplicationStore,
							valueField : 'appId',
							displayField : 'appName',
							editable : false,
							loadingText : '正在筛选',
							queryMode : 'remote',
							listeners : {
								select : function(combo, record, index) {
									var appId = JSON.stringify(this.getValue());
									ReportStore.filter = this.getValue();
									ReportStore.load({
												params : {
													appId : appId
												}
											});
								}
							}
						}]
			}, Ext.create('Ext.PagingToolbar', {
						pageSize : pSize,
						dock : 'bottom',
						store : ReportStore,
						displayInfo : true,
						displayMsg : '显示 {0} - {1} 条，共计 {2} 条',
						emptyMsg : '没有数据',
						plugins : Ext.create('Ext.ux.ProgressBarPager', {})
					})],// end docked items
			listeners : {
				beforerender : function(grid, opts) {
					ReportStore.pageSize = 15;
					ReportStore.load();
				},
//				afterrender : function(grid, opts){
//					pageLoading = 0;
//				}
			}

		});// end ReportGrid

		function showWindow(rec) {
			console.log("showWindow-Report");
			console.log(rec);
			var reportForm = Ext.create('Ext.form.Panel', {
				frame : true,
				bodyStyle : 'padding:5px 5px 0',
				autoWidth : true,
				fieldDefaults : {
					msgTarget : 'side',
					labelWidth : 75
				},
				defaultType : 'textfield',
				defaults : {
					anchor : '100%'
				},
				items : [{
							xtype : 'textfield',
							itemId : 'id',
							name : 'id',
							columnWidth : 0.5,
							hidden : true
						}, {
							xtype : 'textfield',
							itemId : 'repName',
							name : 'repName',
							columnWidth : 0.5,
							fieldLabel : '报告名',
							readonly : true
						}, {
							xtype : 'textfield',
							itemId : 'appName',
							name : 'appName',
							columnWidth : 0.5,
							fieldLabel : '应用名',
							readonly : true
						}, {
							xtype : 'textfield',
							itemId : 'repType',
							name : 'repType',
							columnWidth : 0.5,
							fieldLabel : '类型',
							readonly : true
						}, {
							xtype : 'textfield',
							itemId : 'repLines',
							name : 'repLines',
							columnWidth : 0.5,
							fieldLabel : '行数',
							readonly : true
						}, {
							xtype : 'textfield',
							itemId : 'repAlerts',
							name : 'repAlerts',
							columnWidth : 0.5,
							fieldLabel : '警告数',
							readonly : true
						}, {
							xtype : 'textfield',
							itemId : 'repAlerts',
							name : 'repAlerts',
							columnWidth : 0.5,
							fieldLabel : '警告数',
							readonly : true
						}, {
							xtype : 'textfield',
							itemId : 'repCreateTime',
							name : 'repCreateTime',
							columnWidth : 0.5,
							fieldLabel : '创建时间',
							readonly : true
						}]
				,
					// buttons : [{
					// text : '下载',
					// handler : downloadReport
					// }
					// ]

				});
			function submitForm() {

			}

			function downloadReport() {
				// Ext.Ajax.request({
				// url : 'getPath.action',
				// success : function(res) {
				// var obj = Ext.decode(res.responseText);
				// // 加入getPath返回的json为{'path':'upload/abc.jpg'}
				// window.location.href = obj.path;// 弹出下载对话框
				// }
				// });
			}

			var reportWindow = new Ext.Window({
						title : rec.data['repName'] + '详细信息',
						layout : 'fit',
						width : 650,
						closeAction : 'hide',
						height : '80%',
						resizable : false,
						shadow : true,
						modal : true,
						closable : true,
						bodyStyle : 'padding:5 5 5 5',
						animCollapse : true,
						items : [reportForm]
					});
			if (rec != null) {
				console.log(rec);
				reportForm.getForm().setValues(rec.data);
				reportForm.down('#appName')
						.setValue(rec.raw.appName);
				// reportForm.loadRecord(rec);
				// reportForm.down('#repName').readonly = true;
				// reportForm.down('#repName').setValue(rec.data['repName']);
				// reportForm.down('#appName').readonly = true;
				// reportForm.down('#appName').setValue(rec.data['appName']);
			}
			reportWindow.doLayout();
			reportWindow.show();
		}
		var tab = Ext.getCmp('mainContent').getActiveTab();
		tab.items.add(ReportGrid);
		tab.doLayout();
	}
	pageLoad();

});